单点故障
当一个数据发往目标地址时,有且只有一个节点/链路的时候,一旦该节点/链路故障,就会导致大面积的主机网络终端,称之为单点故障
怎么去解决单点故障
增加冗余/备份的链路和设备
增加冗余/备份设备后,产生了新的问题:
交换机与交换机之间增加备份链路后:极有可能形成环形网络,从而形成二层环路,而二层的环路又极有可能引发广播风暴(交换机的工作原理)。

如何去解决二层环路引发的广播风暴呢?
广播风暴是因为有环路,将环路断开,即可解决。
STP(Spanning Tree Protocol)生成树协议,STP 通过阻塞某个接口,从而在逻辑上断开环路,防止广播风暴,破坏二层环路。当主线路真正发生故障时,逻辑上阻塞的接口会被重新激活,备份链路开始转发数据。当主线路恢复的时候,接口再次会被阻塞。

在设备刚开始运行时,所有的交换机都认为自己是根交换机,这个时候他们就会互相发送 BPDU 报文,BPDU 报文里包含了 BID(Bridge ID),Bridge ID 由两部分组成:优先级(默认32768)+自己的MAC 地址,优先级数值最小的成为根交换机,如若优先级都是默认的 32768,则比较自身的 MAC 地址,越小越优先。

STP协议共定义了三种端口角色
| 根端口(ROOT) | 每一个非根交换机上,有且只有1个,距离根交换机最近的端口 |
|---|---|
| 指定端口(DESI) | 每一个链路上,有且只有1个,距离根交换机最近的端口 |
| 非指定端口 | 除了根端口和指定端口,剩余所有端口都叫做非指定端口 |
1)选举根端口
定律:
根交换机中,没有根端口
非根交换机中,有且只有一个根端口
选举原则:
1.非跟交换机到达根交换机的路径开销成本cost最小的端口,就是根端口(离根交换机最近的端口称之为根端口)
路径COST值:跟端口带宽有关系,带宽越高,COST 值越小
默认情况下,华为交换机的千兆端口 COST值为20000,百兆端口 cost 值为 200000
display stp

2.当cost 值一样时,则比较对端设备的 BID 值,BID 越小越优先
3.当 BID 相同时,则比较对端设备的 PID(port id),越小越优先

2)选举指定端口
定律:
根交换机中的每一个接口都是,指定端口。
一条链路,有且只有一个指定端口
通常情况下,如果一条链路的一端是根端口,另外一端则就是指定端口
选举原则:
1.比较 cost 值
2.比较对端设备的 BID
3.比较对端设备的 PID
最终什么都没被选上的端口,则成为阻塞端口。形成无环的数据转发路线。
浓缩版:
1.选举根交换机
2.选举根端口
3.选举指定端口
4.确定出阻塞端口
stp mode stp //把 stp 模式修改为 STP
stp priority 4096 //将该交换机的stp 优先级调整为 4096(默认是 32768)
display stp //查看当前交换机的 STP 角色
display stp brief //查看当前交换机的端口状态

Bridge Protocol Data Unit -桥协议数据单元,即STP协议的报文,通过这种类型的报文,STP协议实现了自己的所有功能

COST:路径成本,默认情况下,千兆链路的成本为 20000,百兆链路为 200000。可以在端口上手动修改
[Huawei-gi0/0/11]stp cost {value} //手动修改 cost 值
端口标识越小越优先,由端口优先级和端口号两部分组成,端口优先级可配置,默认值128。
从开启 STP 到最终选举完成,运行 STP 协议的交换机总共存在五种状态
| 禁用(disabled) | 强制关闭,没有启动 STP 协议 |
|---|---|
| 阻塞(blocking) | 只接受 BPDU 报文,不发送 BPDU 报文 |
| 侦听(listening) | 比较 BPDU 报文,确定交换机角色和端口角色 |
| 学习(learning) | 基于端口上收到的数据帧,学习 MAC 地址表 |
| 转发(forwarding) | 端口的最终状态,能够发送和接收用户数据 |
hello 时间:端口发送的BPDU报文的时间间隔:默认是2秒,当根交换机产生后,根交换机会以 2s 一个的频率进行发送 BPDU 报文。向所有运行 STP 协议的端口通告目前网络中的STP 状态
转发延迟(forward delay):侦听—学习:15秒 、学习—转发:15秒。(交换机端口从运行 STP 到最终转发数据所用的时间)
最大老化时间(Max Age):一个端口最大的“没有接收BPDU”的时间间隔:20秒。如若根交换机超过了这个时间还没有发送新的 BPDU 报文,则其他非根交换机则会认为根交换机发生了故障,从而进行重新选举
根交换机故障:重新选举根交换机到各端口状态稳定,需要大约 50S
链路故障:重新确定端口状态需要 30S~50S
STP收敛速度慢:30秒~50秒,导致网络中断时间过长
1)RSTP-快速生成树,公有协议:IEEE802.1w,在STP的基础上优化而来
作用:实现网络的快速收敛,降低网络故障时间,提高数据转发的效率
2)RSTP对STP的改进
-增加了2种端口角色(AP和BP)
-减少了3种端口状态(禁用,阻塞,侦听三种状态合为一种)
-引入了P/A 机制(让指定端口尽快进入转发状态)
P表示提议 A表示:同意, 协议一致
1)RSTP和STP有一个共同缺陷:局域网种所有的vlan共享一棵生成树
2)所有的vlan的数据转发路径是相同的、无法实现vlan数据流的负载分担
1)MSTP:多生成树协议,公有协议:IEEE802.1s,在RSTP的基础上优化而来,华为交换机默认开启 MSTP
2)在MSTP网络中,引入了域的概念,称为MST域
3)每一个MST域中包含一个或多个“生成树”称为“实例”
4)每个“实例生成树”都可以绑定vlan,实现vlan数据流的负载分担/负载均衡
5)默认情况下,所有的vlan都属于“实例树0:即:instance 0”
6)不同的“实例树”、就是不同的“生成树”,每个实例树种都可以选举根交换机
1)选举根交换机
2)选举根端口-RP
3)选举指定端口-DP
4)确定替代端口-AP
| 根端口 | 非根交换机上距离根交换机最近的口 |
|---|---|
| 指定端口 | 网段上距离根交换机最近的口 |
| 替代端口 | 非交换机上的“根端口”的替代端口 |
| 备份端口 | 网段上的“指定端口”的备份端口 |
| 丢弃 | 相当于STP中的禁用、侦听、阻塞,不转发用户数据 |
|---|---|
| 学习(learning) | 基于端口上收到的数据帧,学习 MAC 地址表 |
| 转发(forwarding) | 端口的最终状态,能够发送和接收用户数据 |
[SW1]stp mode mstp //将交换机 stp 模式修改为 MSTP(其实默认就是 MSTP)
[SW1]stp region-configuration //进入MST域
[SW1-mst-region]region-name fesco //配置MST域的域名为fesco, 注意,所有交换机的域名都要保持一致
[SW1-mst-region]instance 1 vlan 10 //配置实例树1绑定vlan10 注意!所有交换机instance 的编号和后面的 vlan 也要保持一致
[SW1-mst-region]instance 2 vlan 20 //配置实例树2绑定vlan20
[SW1-mst-region]active region-configuration //激活这个区域 不激活不生效
[SW1-mst-region]quit
[SW1]stp instance 1 priority 4096 //配置SW1为 VLAN 10的根交换机 手动更改优先级,指定让进程 1 里的设备(属于 VLAN10 的设备)把该交换机做为根。
[SW1]display stp brief //查看当前设备的 STP简要端口状态

1)PC1和PC2属于vlan 10,IP地址段192.168.10.0/24
2)PC3和PC4属于 vlan 20,IP地址段 192.168.20.0/24
3)配置MSTP,实现VLAN10内的PC1和PC2的数据转发路径是:SW1-SW2
4)配置MSTP,实现VLAN20内的PC3和PC4的数据转发路径是:SW3-SW4
1)配置PC的IP地址
2)在所有的交换机中都创建vlan10和vlan20
3)交换机连接PC的接口设置为access模式,并加入指定的vlan
4)交换机和交换机互联的接口设置trunk模式,并允许vlan10和vlan20 通过
5)在所有的交换机中配置MSTP,所有交换机中的MSTP配置都要完全相同
6)指定SW1为vlan10的根交换机, 指定SW3为vlan20的根交换机
SW1:
[Huawei]sysname SW1
[SW1]vlan batch 10 20
[SW1]interface gi0/0/1
[SW1-G0/0/1]port link-type access
[SW1-G0/0/1]port default vlan 10
[SW1-G0/0/1]quit
[SW1]port-group group-member g0/0/12 g0/0/13
[SW1-port-group]port link-type trunk
[SW1-port-group]port trunk allow-pass vlan 10 20
[SW1-port-group]quit
[SW1]stp mode mstp
[SW1]stp region-configuration //进入MST域
[SW1-mst-region]region-name fesco //配置MST域的域名为fesco
[SW1-mst-region]instance 1 vlan 10 //配置实例树1绑定vlan10
[SW1-mst-region]instance 2 vlan 20 //配置实例树2绑定vlan20
[SW1-mst-region]active region-configuration //激活这个区域
[SW1-mst-region]quit
[SW1]stp instance 1 priority 4096 //配置SW1为 VLAN 10的根交换机
SW1 交换机配置
SW2:
[Huawei]sysname SW2
[SW2]vlan batch 10 20
[SW2]interface gi0/0/1
[SW2-G0/0/1]port link-type access
[SW2-G0/0/1]port default vlan 10
[SW2-G0/0/1]quit
[SW2]port-group group-member g0/0/12 g0/0/13
[SW2-port-group]port link-type trunk
[SW2-port-group]port trunk allow-pass vlan 10 20
[SW2-port-group]quit
[SW2]stp mode mstp
[SW2]stp region-configuration //进入MST域
[SW2-mst-region]region-name fesco //配置MST域的域名为fesco
[SW2-mst-region]instance 1 vlan 10 //配置实例树1绑定vlan10
[SW2-mst-region]instance 2 vlan 20 //配置实例树2绑定vlan20
[SW2-mst-region]active region-configuration //激活这个区域
SW2 交换机配置
SW3:
[Huawei]sysname SW3
[SW3]vlan batch 10 20
[SW3]interface gi0/0/1
[SW3-G0/0/1]port link-type access
[SW3-G0/0/1]port default vlan 20
[SW3-G0/0/1]quit
[SW3]port-group group-member g0/0/12 g0/0/13
[SW3-port-group]port link-type trunk
[SW3-port-group]port trunk allow-pass vlan 10 20
[SW3-port-group]quit
[SW3]stp mode mstp
[SW3]stp region-configuration //进入MST域
[SW3-mst-region]region-name fesco //配置MST域的域名为fesco
[SW3-mst-region]instance 1 vlan 10 //配置实例树1绑定vlan10
[SW3-mst-region]instance 2 vlan 20 //配置实例树2绑定vlan20
[SW3-mst-region]active region-configuration //激活这个区域
[SW3-mst-region]quit
[SW3]stp instance 2 priority 4096 //配置SW3为 VLAN 20的根交换机
SW3 交换机配置
SW4:
[Huawei]sysname SW4
[SW4]vlan batch 10 20
[SW4]interface gi0/0/1
[SW4-G0/0/1]port link-type access
[SW4-G0/0/1]port default vlan 20
[SW4-G0/0/1]quit
[SW4]port-group group-member g0/0/12 g0/0/13
[SW4-port-group]port link-type trunk
[SW4-port-group]port trunk allow-pass vlan 10 20
[SW4-port-group]quit
[SW4]stp mode mstp
[SW4]stp region-configuration //进入MST域
[SW4-mst-region]region-name fesco //配置MST域的域名为fesco
[SW4-mst-region]instance 1 vlan 10 //配置实例树1绑定vlan10
[SW4-mst-region]instance 2 vlan 20 //配置实例树2绑定vlan20
[SW4-mst-region]active region-configuration //激活这个区域
[SW4-mst-region]quit SW4 交换机配置

1)PC1属于 vlan 10 ,IP地址为192.168.10.1/24,网关为 192.168.10.254
2)PC2属于 vlan 20 ,IP地址为192.168.20.1/24,网关为 192.168.20.254
3)确保PC1与PC2互通
4)合理配置 MSTP ,确保PC1与PC2之间的互通路径是最优的
1)配置PC的IP地址
2)在所有的交换机中都创建vlan10和vlan20
3)交换机连接PC的接口设置为access模式,并加入指定的vlan
4)交换机和交换机互联的接口设置trunk模式,并允许vlan10和vlan20 通过
5)在所有的交换机中配置MSTP,所有交换机中的MSTP配置都要完全相同
6)指定SW1为vlan20的主根, vlan10的备根
7)指定SW2为vlan10的主根, vlan20的备根
8)配置路由器接口的IP地址
SW1:
[SW1]vlan batch 10 20
[SW1]interface g0/0/1
[SW1-G0/0/1]port link-type access
[SW1-G0/0/1]port default vlan 20
[SW1-G0/0/1]quit
[SW1]port-group group-member g0/0/3 g0/0/10 //批量进入 G0/0/3 和 G0/0/10 接口(偷懒)
[SW1-port-group]port link-type trunk
[SW1-port-group]port trunk allow-pass vlan 10 20
[SW1-port-group]quit
[SW1]stp region-configuration //创建 mstp 域
[SW1-mst-region]region-name fesco //给域命名为 fesco(所有交换机名字保持一致)
[SW1-mst-region]instance 1 vlan 10 //创建进程,绑定 vlan
[SW1-mst-region]instance 2 vlan 20
[SW1-mst-region]active region-configuration //激活该域
[SW1]stp instance 2 priority 4096
[SW1]stp instance 1 priority 8192
SW2:
[SW2]vlan batch 10 20
[SW2]interface g0/0/2
[SW2-G0/0/2]port link-type access
[SW2-G0/0/2]port default vlan 10
[SW2-G0/0/2]quit
[SW2]port-group group-member g0/0/4 g0/0/10
[SW2-port-group]port link-type trunk
[SW2-port-group]port trunk allow-pass vlan 10 20
[SW2-port-group]quit
[SW2]stp region-configuration
[SW2-mst-region]region-name fesco
[SW2-mst-region]instance 1 vlan 10
[SW2-mst-region]instance 2 vlan 20
[SW2-mst-region]active region-configuration
[SW2]stp instance 1 priority 4096
[SW2]stp instance 2 priority 8192
SW3:
[SW3]vlan batch 10 20
[SW3]interface g0/0/1
[SW3-G0/0/1]port link-type access
[SW3-G0/0/1]port default vlan 10
[SW3-G0/0/1]interface g0/0/2 //进入和路由器连接的接口
[SW3-G0/0/2]port link-type access //按照要求配置为 access 接口
[SW3-G0/0/2]port default vlan 20 //假如 vlan20
[SW3]port-group group-member g0/0/3 g0/0/4
[SW3-port-group]port link-type trunk
[SW3-port-group]port trunk allow-pass vlan 10 20
[SW3-port-group]quit
[SW3]stp region-configuration
[SW3-mst-region]region-name fesco
[SW3-mst-region]instance 1 vlan 10
[SW3-mst-region]instance 2 vlan 20
[SW3-mst-region]active region-configuration
R1:
[R1]interface g0/0/1
[R1-GigabitEthernet0/0/1]ip address 192.168.20.254 24
[R1-GigabitEthernet0/0/1]int g0/0/2
[R1-GigabitEthernet0/0/2]ip address 192.168.10.254 24